import { Constructor } from "../../ecs/ECSWorld";
import { Command } from "../Command";

export interface ICommandMap {
    detain(command: Object);

    release(command: Object);

    execute(commandClazz: Constructor<Command> | string, payload);

    mapCommand(event: string, commandClazz: string | Constructor<Command>, oneshot?: boolean);

    unmapCommand(event: string, commandClazz: string | Constructor<Command>);

    unmapCommands();

    hasEventCommand(event: string, commandClazz: string | Constructor<Command>): boolean;

}